package com.diy.sigmund.diyuser.service;

import com.diy.sigmund.diycommon.entity.ResultMsg;
import com.diy.sigmund.diycommon.entity.po.user.UserAuth;
import com.diy.sigmund.diycommon.entity.po.user.UserBase;
import com.diy.sigmund.diyuser.entity.dto.UserAuthDTO;
import com.diy.sigmund.diyuser.entity.vo.CustomOAuth2AccessToken;
import java.util.List;

/**
 * 用户授权接口
 *
 * @author ylm-sigmund
 * @since 2021/8/19 16:35
 */
public interface UserAuthService {

    /**
     * 通过用户id查询所有的用户授权信息
     *
     * @param userId 用户id
     * @return List<UserAuth>
     */
    List<UserAuth> selectByUserId(String userId);

    /**
     * 注册接口
     *
     * @param dto 接口入参
     * @return ResultMsg
     */
    ResultMsg register(UserAuthDTO dto);

    /**
     * 登录
     *
     * @param dto 接口入参
     * @return ResultMsg
     */
    ResultMsg login(UserAuthDTO dto);

    /**
     * 登出
     *
     * @return ResultMsg
     */
    ResultMsg signOut();

    /**
     * 注销用户
     *
     * @return ResultMsg
     */
    ResultMsg logout();

    /**
     * 重置密码
     *
     * @param dto 接口入参
     * @return ResultMsg
     */
    ResultMsg resetCredential(UserAuthDTO dto);

    ResultMsg buildCustomUserVO(UserAuth userAuth, UserBase userBase,
            CustomOAuth2AccessToken oAuth2AccessToken);
}
